///*******************************************************************************
// * Copyright (c) 2000, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.multipageeditor;
//
//import org.eclipse.core.runtime.IProgressMonitor;
//import org.eclipse.jface.text.BadLocationException;
//import org.eclipse.jface.text.FindReplaceDocumentAdapter;
//import org.eclipse.jface.text.IDocument;
//import org.eclipse.jface.text.IRegion;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Control;
//import org.eclipse.swt.widgets.Label;
//import org.eclipse.ui.IEditorPart;
//import org.eclipse.ui.PartInitException;
//import org.eclipse.ui.editors.text.TextEditor;
//import org.eclipse.ui.part.MultiPageEditorPart;
//import org.eclipse.ui.texteditor.IDocumentProvider;
//
///**
// * A MultiPageEditorPart with methods that take a peek at things like selection
// * events or selection status or page change events.
// * 
// * @since 3.2
// */
//public class MultiVariablePageEditor extends MultiPageEditorPart {
//
//	private Composite lastPage;
//
//	/**
//	 * Default with 2 pages, although they're on the same editor input and
//	 * they're the TextEditor.
//	 */
//	protected void createPages() {
//		try {
//			TextEditor section1 = new TextEditor();
//			int index = addPage(section1, getEditorInput());
//			setPageText(index, section1.getTitle());
//
//			TextEditor section2 = new TextEditor();
//			index = addPage(section2, getEditorInput());
//			setPageText(index, section2.getTitle());
//
//			ContextTextEditor section3 = new ContextTextEditor();
//			index = addPage(section3, getEditorInput());
//			setPageText(index, section3.getTitle());
//
//		} catch (PartInitException e) {
//			throw new RuntimeException(e);
//		}
//	}
//
//	public void doSave(IProgressMonitor monitor) {
//		// do nothing
//	}
//
//	public void doSaveAs() {
//		throw new UnsupportedOperationException(
//				"doSaveAs should not be called.");
//	}
//
//	/**
//	 * No save as.
//	 * 
//	 * @return false
//	 */
//	public boolean isSaveAsAllowed() {
//		return false;
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see org.eclipse.ui.part.MultiPageEditorPart#pageChange(int)
//	 */
//	protected void pageChange(int newPageIndex) {
//		super.pageChange(newPageIndex);
//		IEditorPart part = getEditor(newPageIndex);
//		if (part instanceof TextEditor) {
//			TextEditor editor = (TextEditor) part;
//			IDocumentProvider provider = editor.getDocumentProvider();
//			IDocument doc = provider.getDocument(getEditorInput());
//			FindReplaceDocumentAdapter find = new FindReplaceDocumentAdapter(
//					doc);
//			try {
//				IRegion region = find.find(0, "#section0" + (newPageIndex + 1),
//						true, true, false, false);
//				if (region != null) {
//					editor.selectAndReveal(region.getOffset(), region
//							.getLength());
//				}
//			} catch (BadLocationException e) {
//				System.err.println("Failed to find a section");
//			}
//		}
//	}
//
//	/**
//	 * Set the active page in this MPEP. Just delegate back to
//	 * setActivePage(int).
//	 * 
//	 * @param index
//	 *            The page index which must be valid.
//	 */
//	public void setPage(int index) {
//		super.setActivePage(index);
//	}
//
//	/**
//	 * Add a page with a composite for testing.
//	 * 
//	 */
//	public void addLastPage() {
//		lastPage = new Composite(getContainer(), SWT.NONE);
//		Label l = new Label(lastPage, SWT.SHADOW_IN);
//		l.setText(getEditorInput().getName());
//		addPage(lastPage);
//	}
//
//	/**
//	 * remove the last page for testing.
//	 * 
//	 */
//	public void removeLastPage() {
//		if (getPageCount() > 0) {
//			removePage(getPageCount() - 1);
//		}
//		lastPage = null;
//	}
//
//	/**
//	 * Get the last page composite for testing.
//	 * 
//	 * @return the last page.
//	 */
//	public Control getLastPage() {
//		return lastPage;
//	}
//
//	/**
//	 * Return the control for testing (like the editor control).
//	 * 
//	 * @param index
//	 *            the page index to get
//	 * @return the control for that page
//	 */
//	public Control getTestControl(int index) {
//		return getControl(index);
//	}
//}
